import { useEffect, useState } from 'react'

// 希望value是什么类型，返回是什么类型(泛型)

export const useDebounce = <V>(value: V, delay?: number) => {
  const [debounceValue, setDebounceValue] = useState(value)
  useEffect(() => {
    // 每次在value变化后，设置一个定时器
    const timeout = setTimeout(() => setDebounceValue(value), delay)
    // 每次在上一个useEffect处理完以后在运行
    return () => clearTimeout(timeout)
  }, [value, delay])
  return debounceValue
}
